package es.acaixa.agui;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.ButtonGroup;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JRadioButton;

import es.acaixa.cnegocios.Funcionario;
import es.acaixa.dcontroladores.ControladorFuncionario;

public class ConsultarFuncionario extends JInternalFrame {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField txtNome;
	private JTextField txtCpf;
	private JTable table;
	private JRadioButton rdbtnNome;
	private JRadioButton rdbtnCpf;
	private JButton btnBuscar;
	private DefaultTableModel modelo;
	private JScrollPane scrollPane;
	private ButtonGroup busca;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ConsultarFuncionario frame = new ConsultarFuncionario();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public ConsultarFuncionario() {
		setTitle("Consultar  Funcion\u00E1rio");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, 452, 284);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		setClosable(true);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		JLabel label = new JLabel("Nome");
		label.setBounds(23, 66, 46, 14);
		contentPane.add(label);
		
		txtNome = new JTextField();
		txtNome.setColumns(10);
		txtNome.setBounds(60, 63, 231, 20);
		contentPane.add(txtNome);
		txtNome.setEditable(false);
		
		JLabel label_2 = new JLabel("CPF");
		label_2.setBounds(33, 93, 36, 14);
		contentPane.add(label_2);
		
		txtCpf = new JTextField();
		txtCpf.setColumns(10);
		txtCpf.setBounds(60, 91, 106, 20);
		contentPane.add(txtCpf);
		txtCpf.setEditable(false);
		
		btnBuscar = new JButton("Buscar");
		btnBuscar.setBounds(189, 89, 89, 23);
		contentPane.add(btnBuscar);
		
		scrollPane = new JScrollPane();
		scrollPane.setBounds(23, 137, 403, 110);
		contentPane.add(scrollPane);
		
		JLabel lblConsultarPor = new JLabel("Consultar por:");
		lblConsultarPor.setBounds(10, 11, 81, 14);
		contentPane.add(lblConsultarPor);
				
		rdbtnNome = new JRadioButton("Nome");
		rdbtnNome.setBounds(85, 7, 109, 23);
		contentPane.add(rdbtnNome);
		rdbtnNome.setEnabled(true);
		
		rdbtnCpf = new JRadioButton("CPF");
		rdbtnCpf.setBounds(85, 32, 109, 23);
		contentPane.add(rdbtnCpf);
		rdbtnCpf.setEnabled(true);
		
		busca = new ButtonGroup();
		busca.add(rdbtnNome);
		busca.add(rdbtnCpf);
		
		table = new JTable();
		scrollPane.setViewportView(table);
		
		table.setAutoResizeMode(0);
		
		table.setModel(new DefaultTableModel(
			new Object[][] {
			},
			new String[] {
				"CPF", "Nome completo", "Nascimento"
			}
		) {
			Class[] columnTypes = new Class[] {
				String.class, String.class, String.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
		});
		table.getColumnModel().getColumn(0).setPreferredWidth(94);
		table.getColumnModel().getColumn(1).setPreferredWidth(230);
		table.getColumnModel().getColumn(2).setPreferredWidth(114);
		
		modelo = (DefaultTableModel)table.getModel();
		
		ButtonHandler handler = new ButtonHandler();
		rdbtnCpf.addActionListener(handler);
		rdbtnNome.addActionListener(handler);
		btnBuscar.addActionListener(handler);
		
	}
	
	private class ButtonHandler implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent event) {
			
			if(event.getSource() == rdbtnNome){
				int linhas = modelo.getRowCount();
				for(int j=0; j<linhas; j++){
					modelo.removeRow(j);
				}
				
				txtCpf.setText("");
				txtCpf.setEditable(false);
				txtNome.setEditable(true);
			}
			
			if(event.getSource() == rdbtnCpf){
				int linhas = modelo.getRowCount();
				for(int j=0; j<linhas; j++){
					modelo.removeRow(j);
				}
				
				txtNome.setText("");
				txtNome.setEditable(false);
				txtCpf.setEditable(true);
			}
			
			if(event.getSource() == btnBuscar){
				
				int linhas = modelo.getRowCount();
				for(int j=0; j<linhas; j++){
					modelo.removeRow(j);
				}
				
				if(rdbtnCpf.isSelected()){
					try{
						String cpf = txtCpf.getText();
						System.out.println(cpf);
						ControladorFuncionario controlador = new ControladorFuncionario();
						Funcionario func = new Funcionario();
						func = controlador.consultar(cpf);
						
						Object[] linha = new Object[] { func.getCpf(), func.getNomeCompleto(), func.getDataNascimento() };
						modelo.addRow(linha);
						
						controlador = null;
						func = null;
					
					}catch (Exception e) {
						e.printStackTrace();
					}
				}else if(rdbtnNome.isSelected()){
					try{
						String nome = txtNome.getText();
						ControladorFuncionario controlador = new ControladorFuncionario();
						List<Funcionario> func = controlador.listar();
						
						for(Funcionario f : func){
							if(f.getNomeCompleto().contains(nome)){
								Object[] linha = new Object[] { f.getCpf(), f.getNomeCompleto(), f.getDataNascimento() };
								modelo.addRow(linha);
							}
						}
						
						controlador = null;
						func = null;
					}catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
			
		}
		
	}
}
